Technical Note TN1128
Understanding Open Transport Memory Management

ñ⁄éü

DZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇ≈ÇÕ Open Transport ÇÃäÑÇËçûÇ›ëŒâûÉÅÉÇÉää«óùÉVÉXÉeÉÄÇÃìÆçÏå¥óùÇΔdžǻÇΩÇÃÉ\ÉtÉgÉEÉFÉAÇ≈å¯â ìIÇ…óòópÇ∑ÇÈï˚ñ@Çê‡ñæÇµÇ‹Ç∑ÅB

DZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇÕÅAOpen Transport ÇÃÉNÉâÉCÉAÉìÉgÇ‹ÇΩÇÕÉJÅ[ÉlÉãÉRÅ[ÉhÇäJî≠Ç∑ÇÈè„ãâÉvÉçÉOÉâÉ}ÇëŒè€Ç…ǵǃǢNjÇ∑ÅB

Åm2001îN1åé9ì˙Ån



OT ÉÅÉÇÉää«óùì¸ñÂ

Open Transport ÇÕäÑÇËçûÇ›éûÇ…åƒÇ—èoǵâ¬î\Ç»ÉÅÉÇÉääÑÇËìñǃÉãÅ[É`ÉìÇëΩêîópà”ǵǃǢNjÇ∑ÅBOTAllocMemÅAOTAllocMemInContextÅAOTAllocÅAOTAllocInContextÅAOTAllocSharedClientMemÅAOTAllocPortMem Ç≈Ç∑ÅBÇ«ÇÒÇ»èÍçáÇ…Ç«ÇÃÉãÅ[É`ÉìÇégǶnjÇÊǢǩÅiÇ‹ÇΩÅADZǧǵÇΩÉãÅ[É`ÉìÇ™ Open Transport Ç‚ Mac OS ä«óùâ∫ÇÃÉÅÉÇÉäDžǫǧâeãøÇ∑ÇÈÇ©ÅjÇímÇÈÇ…ÇÕÅAOT ÇÃÉÅÉÇÉää«óùÉVÉXÉeÉÄÇóùâÇ∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅB

ã≠óÕÇ»ÉÅÉÇÉäÉvÅ[Éã

OT ÉÅÉÇÉää«óùÇÕ 4 ǬÇÃÉÅÉÇÉäÉvÅ[ÉãÇÃè„à Ç…à íuǵNjÇ∑ÅB

  1. ÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇÕ InitOpenTransportÅiÇ‹ÇΩÇÕ InitOpenTransportUtilitiesÅjÇåƒÇ—èoǵÇΩÉvÉçÉOÉâÉÄDžǪÇÍǺÇÍäÑÇËìñǃÇÁÇÍÇ‹Ç∑ÅBǪÇÃÉvÉçÉOÉâÉÄÇà OT ÉÅÉÇÉääÑÇËìñǃóvãÅÇñûÇΩÇ∑LJÇÃÇ≈ÅAÉvÉçÉOÉâÉÄÇ™ CloseOpenTransport ÇåƒÇ—èoÇ∑ÇΔÅiñæé¶ìIÇ‹ÇΩÇÕÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃèIóπÇ≈Åjîjä¸Ç≥ÇÍÇ‹Ç∑ÅB
  2. ã§óLÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÅiÉlÉCÉeÉBÉuÉvÅ[ÉãÇΔLJåƒÇŒÇÍÇÈÅjÇÕç≈èâÇÃÉvÉçÉOÉâÉÄÇ™Åií èÌÇÕ AppleTalk ÉvÉçÉgÉRÉãÉXÉ^ÉbÉNÇ™ÉuÅ[ÉgÉVÅ[ÉPÉìÉXÇÃç≈èâÇÃǟǧÇ≈ÅjInitOpenTransport ÇåƒÇ—èoÇ∑ÇΔäÑÇËìñǃÇÁÇÍÇ‹Ç∑ÅBOT ÇÃÉNÉâÉCÉAÉìÉgÉâÉCÉuÉâÉäÇ™äÑÇËìñǃÇÈÉÅÉÇÉäÇÃëÂïîï™ÇÕDZÇÃÉvÅ[ÉãÇégópǵNjÇ∑ÅB
  3. ÉJÅ[ÉlÉãÉvÅ[ÉãÇÕÅAOT ÉJÅ[ÉlÉãÇÃÉçÅ[ÉhéûÇ…äÑÇËìñǃÇÁÇÍÇ‹Ç∑ÅBDZÇÍÇÕ OT ÉJÅ[ÉlÉãÇ‚ÉvÉâÉOÉCÉìÇ™égópǵNjÇ∑Åió·Ç¶ÇŒ STREAMS ÇÃÉÇÉWÉÖÅ[ÉãÇ‚ÉhÉâÉCÉoÅBÅj
  4. É|Å[ÉgÉvÅ[ÉãÇÕÉvÉçÉOÉâÉÄÇ™ÇÕÇ∂Çflǃ InitOpenTransport Ç‹ÇΩÇÕ InitOpenTransportUtilities ÇåƒÇ—èoÇ∑ÇΔäÑÇËìñǃÇÁÇÍÇ‹Ç∑ÅBDZÇÃÉvÅ[ÉãÇÕÉ|Å[ÉgÇ…ä÷Ç∑ÇÈèÓïÒÇï€éùǵNjÇ∑ÅBDZÇÍÇÕÉJÅ[ÉlÉãÉvÅ[ÉãÇΔÇÕà·Ç¢Ç‹Ç∑ÅBÉ|Å[ÉgÉXÉLÉÉÉiÇÕÅAÉJÅ[ÉlÉãÇÉçÅ[ÉhǵǻÇ≠ǃLJÅiǬNjÇËÉJÅ[ÉlÉãÉvÅ[ÉãǙǻÇ≠ǃLJÅjégǶNjÇ∑ÅB

Open Transport ÉÅÉÇÉäÉvÅ[ÉãÇÕ Apple Shared Library ManagerÅiASLMÅjTStandardPool ÉNÉâÉXÇ≈é¿ëïÇ≥ÇÍÅADZÇÃÉNÉâÉXÇÃëÆê´ÇÃÇ¢Ç≠ǬǩÇåpè≥ǵNjÇ∑ÅB

  1. Ç«ÇÃÉvÅ[ÉãLJèÌÇ… Mac OS ÉÅÉÇÉäÉ}ÉlÅ[ÉWÉÉÇÃÉ]Å[ÉìÇ…äÑÇËìñǃÇÁÇÍÇ‹Ç∑ÅB
  2. Ç«ÇÃÉvÅ[ÉãDžLJèâä˙ÉTÉCÉYǙdžÇËÇ‹Ç∑ÅB
  3. ÉÅÉÇÉäÉvÅ[ÉãÇÕäÑÇËçûǛDžëŒâûǵǃǢNjÇ∑ÅBOT ÉÅÉÇÉäÉvÅ[ÉãÇ©ÇÁÇÕǢǬÇ≈LJÉÅÉÇÉäÇäÑÇËìñǃÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBǵǩǵÅAÉVÉXÉeÉÄÉ^ÉXÉNéûDžǵǩÉvÅ[ÉãÇägëÂÇ∑ÇÈDZÇΔÇÕÇ≈Ç´Ç‹ÇπÇÒÅBDZÇÃÇΩÇflÅAäÑÇËçûÇ›éûÇ…ÉÅÉÇÉäÇäÑÇËìñǃÇÈÇΔÅAóvãÅÇñûÇΩÇ∑ÇÃÇ…è\ï™Ç»ÉÅÉÇÉäÇ™É]Å[Éìì‡Ç…džǡǃLJÅAäÑÇËìñǃDžé∏îsÇ∑ÇÈèÍçáǙdžÇËÇ‹Ç∑ÅB
  4. ÉÅÉÇÉäÇ™ë´ÇËÇ»Ç≠Ç»ÇÈÇΔÅAÉÅÉÇÉäÉvÅ[ÉãÇÕÉVÉXÉeÉÄÉ^ÉXÉNéûÇ… Mac OS ÉÅÉÇÉäÉ}ÉlÅ[ÉWÉÉÇ©ÇÁÉÅÉÇÉäÇäÑÇËìñǃNjÇ∑ÅBÉÅÉÇÉäÉvÅ[ÉãÇÕàÍíËÇÃÉpÅ[ÉZÉìÉgíPà Ç≈í«â¡Ç≥ÇÍǃǢǴNjÇ∑ÅBDZÇÍÇëùâ¡ó¶ÇΔåƒÇ—Ç‹Ç∑ÅBëùâ¡ó¶ÇÕç≈è¨ëùâ¡ó Çâ∫âÒÇÈDZÇΔÇÕdžÇËÇ‹ÇπÇÒÅB
  5. ÉvÅ[ÉãÇ™ägëÂÇ≥ÇÍÇÈÇÃÇÕãÛÇ´ÉXÉyÅ[ÉXÇ™â∫å¿Çâ∫âÒÇ¡ÇΩèÍçáÇ≈Ç∑ÅBè„å¿Ç‡Ç†ÇËÅADZÇÍÇè„âÒÇÈÇΔÉvÅ[ÉãÇÕèkè¨ÇäJénǵNjÇ∑ÅBDZÇÃã@î\ÇÕÉJÅ[ÉlÉãÉvÅ[ÉãÇæÇØÇ™óòópǵNjÇ∑ÅB


íçà”:
Open Transport ÇÕ ASLM ÇÃÉÅÉÇÉãÉvÅ[Éãã@î\ÇóòópǵǃǢNjÇ∑Ç™ÅAOpen Transport ÇÃç°å„ÇÃÉoÅ[ÉWÉáÉìÇÕ ASLM ÇNjǡÇΩÇ≠égÇÌÇ»Ç≠Ç»ÇËÇ‹Ç∑ÅBǪÇÃç€ Open Transport ÇÃÉÅÉÇÉäÉvÅ[ÉãÇÕ Open Transport é©ëÃÇ™é¿ëïÇ∑ÇÈDZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅB



íê:
Mac OS SDK CD Çà ASLM SDK Çà ASLM Developer's Guide Ç…ÇÕ ASLM ÉÅÉÇÉäÉvÅ[ÉãÉNÉâÉXDžǬǢǃLJǡÇΔè⁄ǵǢê‡ñæÇ™Ç†ÇËÇ‹Ç∑ÅB



ÉvÅ[ÉãÉpÉâÉÅÅ[É^

éüÇÃï\Ç…äeéÌ Open Transport ÉÅÉÇÉäÉvÅ[ÉãÇÃäÓñ{ìIÇ»ÉpÉâÉÅÅ[É^Çé¶ÇµÇ‹Ç∑ÅB

ÉvÅ[ÉãÇÃéÌï 

É]Å[Éì

èâä˙íl

ëùâ¡ó¶

ç≈è¨ëùâ¡ó 

â∫å¿

è„å¿

ÉNÉâÉCÉGÉìÉg [1]

ÉAÉvÉä

2K

20%

2K

1K

ñ≥å¿

ÉNÉâÉCÉGÉìÉg [2]

ÉVÉXÉeÉÄ

1K

20%

2K

512

ñ≥å¿

ã§óL [3]

ÉVÉXÉeÉÄ

2K

20%

4K

2K+1

ñ≥å¿

ã§óL [4]

ÉVÉXÉeÉÄ

3K

20%

4K

3K+1

ñ≥å¿

ÉJÅ[ÉlÉã [6]

ÉVÉXÉeÉÄ [9]

4K [5]

20%

34K

34K+1

[10]

ÉJÅ[ÉlÉã [7]

ÉVÉXÉeÉÄ [9]

250K

20%

34K

34K+1

[10]

ÉJÅ[ÉlÉã [8]

ÉVÉXÉeÉÄ [9]

16K [5]

20%

34K

34K+1

[10]

É|Å[Ég

ÉVÉXÉeÉÄ

2K

20%

1K

1K+1

ñ≥å¿

íê:

  1. DZÇÃçsÇÕÅAOT ÉAÉvÉäÉPÅ[ÉVÉáÉìÉâÉCÉuÉâÉäÅiñºëOÇ™ÅuAppÅvÇ≈èIÇÌÇÈLJÇÃÅjÇÉäÉìÉNÇ∑ÇÈÉNÉâÉCÉAÉìÉgÉvÉçÉOÉâÉÄÇ≈ÅAInitLibraryManager ÇåƒÇ—èoǵǃǢǻǢLJÇÃÇ≈Ç∑ÅB
  2. DZÇÃçsÇÕÅAOT ÉGÉNÉXÉeÉìÉVÉáÉìÉâÉCÉuÉâÉäÅiñºëOÇ™ÅuExtnÅvÇ≈èIÇÌÇÈLJÇÃÅjÇÉäÉìÉNÇ∑ÇÈÉNÉâÉCÉAÉìÉgÉvÉçÉOÉâÉÄÇ≈ÅAInitLibraryManager ÇåƒÇ—èoǵǃǢǻǢLJÇÃÇ≈Ç∑ÅB
  3. Open Transport 1.3 à»ëO
  4. Open Transport 2.0 à»ç~
  5. Ç±ÇøÇÁÇ≈è⁄ǵÇ≠âê‡Ç≥ÇÍǃǢNjÇ∑ÅB
  6. Open Transport 1.3 à»ëO
  7. Open Transport 2.0 Ç©ÇÁ 2.5 Ç‹Ç≈
  8. Open Transport 2.6 à»ç~
  9. OT ÇÕÅAâºëzÉÅÉÇÉäÇÃäœì_Ç©ÇÁÅAÉJÅ[ÉlÉãÉvÅ[ÉãÇÃÉÅÉÇÉäÇñæé¶ìIÇ…ÉzÅ[ÉãÉhǵNjÇ∑ÅBëºÇÃÉvÅ[ÉãÇÃÉÅÉÇÉäÇÃÉzÅ[ÉãÉhÇÕï€èÿÇ≥ÇÍÇ‹ÇπÇÒÅB
  10. OT ÉJÅ[ÉlÉãÉvÅ[ÉãÇÕâ∫ãLÇ…é¶Ç∑Ç¢Ç≠ǬǩÇÃóvàˆÇ…ǵÇΩǙǢÅAägëÂÇ‹ÇΩÇÕèkè¨ÇµÇ‹Ç∑ÅB


èdóv:
è„ãLÇ©ÇÁLJÇÌÇ©ÇÈÇÊǧDžÅAÉÅÉÇÉäÉvÅ[ÉãÇÃÉpÉâÉÅÅ[É^ÇÕó\çêÇ»Ç≠ïœçXÇ≥ÇÍÇÈDZÇΔǙdžÇËÇ‹Ç∑ÇÃÇ≈ÅADZÇÍÇÁÇÃílÇ…àÀë∂ǵǃÇÕÇ»ÇËÇ‹ÇπÇÒÅB



OT ÉÅÉÇÉäÇÃå¯â ìIÇ»óòópñ@

DZÇÃÉZÉNÉVÉáÉìÇ≈ÇÕÅAOT ÉÅÉÇÉää«óùÉVÉXÉeÉÄÇå¯â ìIÇ…óòópÇ∑ÇÈÉqÉìÉgÇ‚ÉRÉcÇè–âÓǵNjÇ∑ÅB

OT ÉãÅ[É`ÉìÇΔÉvÅ[ÉãÇÃégópñ@

éüÇÃï\ÇÕÉÅÉÇÉääÑÇËìñǃÇçsǧ OT ÇÃàÍî ìIÇ»ÉãÅ[É`ÉìÇÇ‹ÇΔÇflÇΩLJÇÃÇ≈Ç∑ÅBǪÇÍǺÇÍÇÃäÑÇËìñǃó ÅAäÑÇËìñǃêÊÇÃÉvÅ[ÉãÇé¶ÇµÇ‹Ç∑ÅB

ÉãÅ[É`Éì

ÉvÅ[Éã

äTéZäÑìñó 

OTAllocMem [1], OTAllocMemInContext

ÉNÉâÉCÉGÉìÉg

size ÉpÉâÉÅÅ[É^Ç…è]ǧ

OTAllocMem [1]

ÉJÅ[ÉlÉã

size ÉpÉâÉÅÅ[É^Ç…è]ǧ

OTAlloc

ÉNÉâÉCÉGÉìÉg

ref ÇΔ fields ÉpÉâÉÅÅ[É^Ç…è]ǧ

OTAllocSharedClientMem

ã§óL

size ÉpÉâÉÅÅ[É^Ç…è]ǧ

OTAllocPortMem

É|Å[Ég

size ÉpÉâÉÅÅ[É^Ç…è]ǧ

OTOpenEndpoint

ÉNÉâÉCÉGÉìÉg
ã§óL
É|Å[Ég

16 bytes
150 bytes
1 KB

OTStreamOpen

ã§óL
ÉJÅ[ÉlÉã

40 ÉoÉCÉg
1 KB

OTCreateConfiguration

ã§óL

100 ÉoÉCÉg [2]

OTSnd

ÉJÅ[ÉlÉã

n ÉoÉCÉg [3]



èdóv:
DZDZDžé¶ÇµÇΩó ÇÕäTéZÇ≈Ç∑ÅBégópíÜÇÃÉvÉçÉgÉRÉãÇÃëäëŒìIÇ»ï°éGÇ≥Ç‚ Open Transport ÇÃÉoÅ[ÉWÉáÉìÇ…ÇÊǡǃLJàŸÇ»ÇËÇ‹Ç∑ÅBÉvÉçÉOÉâÉÄÇÃÉÅÉÇÉäégópó ÇâêÕÇ∑ÇÈéwêjÇΔǵǃåfç⁄ǵNjǵÇΩÅB



Notes:

  1. OTAllocMem ÇÕÉäÉìÉNÇ∑ÇÈÉâÉCÉuÉâÉäÇ…ÇÊǡǃìÆçÏÇ™àŸÇ»ÇËÇ‹Ç∑ÅBOT ÉNÉâÉCÉAÉìÉgÉâÉCÉuÉâÉäÅió·Ç¶ÇŒ OpenTransportLibÅjÇΔÉäÉìÉNÇ∑ÇÈÇΔ OTAllocMem ÇÕÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇ©ÇÁÉÅÉÇÉäÇäÑÇËìñǃNjÇ∑ÅBOT ÉJÅ[ÉlÉãÉâÉCÉuÉâÉäÅiOpenTptModuleLib ǻǫÅjÇΔÉäÉìÉNÇ∑ÇÈÇΔ OTAllocMem ÇÕÉJÅ[ÉlÉãÉvÅ[ÉãÇ©ÇÁÉÅÉÇÉäÇäÑÇËìñǃNjÇ∑ÅBOTAllocMemInContext ǻǫÇÃÅgInContextÅhÇ≈èIÇÌÇÈ OT ÉãÅ[É`ÉìÇÕä®à·Ç¢ÇǮDZÇ∑DZÇΔÇÕdžÇËÇ‹ÇπÇÒÅBè⁄ǵÇ≠ÇÕÉeÉNÉjÉJÉãÉmÅ[Ég 1173ÅgUnderstanding Open Transport Asset TrackingÅhÇÇ≤óóâ∫Ç≥Ç¢ÅB
  2. ê≥ämÇ»ílÇÕç\ê¨ÇÃï°éGÇ≥Ç…ÇÊÇËÇ‹Ç∑ÅBDZDZDžé¶ÇµÇΩílÇÕ OTCreateConfiguration("serial") Ç÷ÇÃíPèÉÇ»åƒÇ—èoǵDžÇÊÇÈâ∫å¿ÇÃílÇ≈Ç∑ÅB
  3. DZÇÃÉÅÉÇÉäÇ™è¡îÔÇ≥ÇÍÇÈÇÃÇÕÅAÉGÉìÉhÉ|ÉCÉìÉgÇ™ëóêMÉfÅ[É^ÇÉRÉsÅ[Ç∑ÇÈèÍçáÅiACK Ç≈ï˙èoÇ≥ÇÍÇÈÅjÇæÇØÇ≈Ç∑ÅBDZÇÍÇ™ÉfÉtÉHÉãÉgê›íËÇ≈Ç∑ÅBÉRÉsÅ[ǵǻǢÇ≈ëóêMÇ∑ÇÈê›íËÇ≈džÇÍÇŒÅADZÇÃÉãÅ[É`ÉìÇÕÇ≤Ç≠è≠ó ÇÃä«óùñ⁄ìIÇÃÉÅÉÇÉäÇäÑÇËìñǃÇÈÇ…Ç∑ǨNjÇπÇÒÅB

MacsBugs Ç≈ÉÅÉÇÉäÉvÅ[ÉãÇí≤Ç◊ÇÈï˚ñ@

è„ãLÇÃâêÕÇÕÅAäeÉãÅ[É`ÉìÇåJÇËï‘ǵåƒÇ—èoǵǻǙÇÁäeÉÅÉÇÉäÉvÅ[ÉãÇ÷ÇÃâeãøÇãLò^Ç∑ÇÈDZÇΔÇ≈ìæÇÁÇÍÇΩãAî[ìIǻLJÇÃÇ≈Ç∑ÅBOT Ç…ÇÕÉÅÉÇÉäÉvÅ[ÉãÇÃóòópèÛãµÇë™íËÇ∑ÇÈÉvÉçÉOÉâÉ~ÉìÉOÉCÉìÉ^ÉtÉFÅ[ÉXÇÕdžÇËÇ‹ÇπÇÒÇ™ÅAMacsBug ÇégǧÇΔä»íPÇ…í≤Ç◊ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

Ç‹Ç∏ÅAOT ÇÃÉEÉFÉuÉyÅ[ÉW Ç©ÇÁ Open Transport ÇÃÉfÉoÉbÉOÉoÅ[ÉWÉáÉìÇì¸éËǵÅAÉCÉìÉXÉgÅ[ÉãÉpÉbÉPÅ[ÉWÇ©ÇÁÅuOT Debugger PrefsÅvÉtÉ@ÉCÉãÇéÊÇËèoǵNjÇ∑ÅB

  Open Tpt Debug Installer
    Open Transport Installer
      Open Transport Files
        OT Debugger Prefs

ÅuOT Debugger PrefsÅvÉtÉ@ÉCÉãÇdžǻÇΩÇÃÉ}ÉVÉìÇÃÅuMacsBug PreferencesÅvÉtÉHÉãÉ_Ç…ÉRÉsÅ[ǵǃÅAÉ}ÉVÉìÇçƒãNìÆÇµÇ‹Ç∑ÅB



èdóv:
ÅuOT Debugger PrefsÅvÉtÉ@ÉCÉãÇÕÅAdžǻÇΩÇ™ÉCÉìÉXÉgÅ[ÉãǵÇΩ OT ÇÃÉoÅ[ÉWÉáÉìÇΔçáívÇ∑ÇÈÉoÅ[ÉWÉáÉìî‘çÜÇéùǬ OT ÇÃÉfÉoÉbÉOÉCÉìÉXÉgÅ[ÉâÇ©ÇÁéÊÇËèoÇ∑DZÇΔÇ™èdóvÇ≈Ç∑ÅBÅuOT Debugger PrefsÅvÉtÉ@ÉCÉãÇ…ÇÕÅAOT ÉrÉãÉhÉVÉXÉeÉÄÇ©ÇÁé©ìÆê∂ê¨Ç≥ÇÍÇΩ MacsBug ÉeÉìÉvÉåÅ[ÉgÇ™ä‹Ç‹ÇÍÅADZÇÍÇÕ OT ÇÃÉfÅ[É^ç\ë¢ëÃÇÃÉtÉBÅ[ÉãÉhÉåÉCÉAÉEÉgÇ…ìKçáǵǃǢNjÇ∑ÅBOT ÇÃÉoÅ[ÉWÉáÉìÇ™à·Ç§ÇΔÉåÉCÉAÉEÉgLJà·Ç¢Ç‹Ç∑ÅBåÎÇ¡ÇΩÉoÅ[ÉWÉáÉìÇà "OT Debugger Prefs" ÉtÉ@ÉCÉãÇégǧÇΔÅAMacsBug Ç≈ê≥ämÇ»åãâ ÇÕìæÇÁÇÍÇ‹ÇπÇÒÅB



ÅuOT Debugger PrefsÅvÉtÉ@ÉCÉãÇÉCÉìÉXÉgÅ[ÉãǵÇΩÇÁÅAäeéÌ OT ÉÅÉÇÉäÉvÅ[ÉãÇíTǵǃì‡óeï\é¶Ç™â¬î\Ç≈Ç∑ÅBç≈èâÇ…ÅAOT ÉOÉçÅ[ÉoÉãóÃàÊÇï\é¶ÇµÇ‹Ç∑ÅB68K ÇΔ PowerPC Ç≈ÇÕÅAï˚ñ@Ç™àŸÇ»ÇËÇ‹Ç∑ÅBǪÇÍǺÇÍà»â∫ÇÃÉZÉNÉVÉáÉìÇ≈é¶ÇµÇ‹Ç∑ÅB

PowerPC Ç≈ OT ÉOÉçÅ[ÉoÉãóÃàÊÇÉ_ÉìÉvÇ∑ÇÈ

PowerPC Ç≈ÇÕéüÇÃÉRÉ}ÉìÉhÇ≈ OT ÉOÉçÅ[ÉoÉãóÃàÊÇÉ_ÉìÉvǵNjÇ∑ÅB



>>> dm __gOTGlobal OTGlobal
 Displaying OTGlobal at 0006BDA0
  0006BDA0  fGestaltValue      0000003F 
  0006BDA4  f68KDeferredProc   00000000 
  0006BDA8  fVersion           01308000 
  [... à»â∫è»ó™ ...]
                             0006BF04  fClientGlobal      
  0006BF04    fClientList      
  0006BF04      fHead          005F1714  
  [... à»â∫è»ó™ ...]
                             0006BF30    fNativePool      00095320 
  [... à»â∫è»ó™ ...]
                             0006BF8C  fKernelGlobal      
  0006BF8C    fKernelPool      0039A4A0 
  0006BF90    fKernelPoolMaxSize  #13421772 
  [... à»â∫è»ó™ ...]
                             0006BFD4    fPortPool        0037AA90  
  [... à»â∫è»ó™ ...]


OT ÇÕǪÇÃÉOÉçÅ[ÉoÉãóÃàÊÇÃÉAÉhÉåÉXÇ CFM ÉVÉìÉ{ÉãÅA__gOTGlobal ÇΔǵǃÉGÉNÉXÉ|Å[ÉgǵNjÇ∑ÅBè„ãLÇÃÉRÉ}ÉìÉhÇÕÅuOT Debugger PrefsÅvÇà OTGlobal ÉeÉìÉvÉåÅ[ÉgÇégǡǃǪÇÃÉAÉhÉåÉXÇÉ_ÉìÉvǵNjÇ∑ÅBÉÅÉÇÉäÇÃóòópèÛãµÇ…ä÷ǵǃǢǶnjÅAéüÇà 3 ǬÇÃÉtÉBÅ[ÉãÉhÇ™ä÷åWǵNjÇ∑ÅB

  1. fNativePool -- ã§óLÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇÃÉAÉhÉåÉX
  2. fKernelPool -- ÉJÅ[ÉlÉãÉvÅ[ÉãÇÃÉAÉhÉåÉX
  3. fClientList.fHead -- OT ÉNÉâÉCÉAÉìÉgÉäÉXÉgÇÃêÊì™ÅBÉäÉXÉgÇÃç≈èâÇÃÉNÉâÉCÉAÉìÉgÇÕéüÇÃÉRÉ}ÉìÉhÇ≈É_ÉìÉvÇ≈Ç´Ç‹Ç∑ÅB

    >>> dm 5f1714 RegisteredClient
     Displaying RegisteredClient at 005F1714
      005F1714  fLink              
      005F1714    fNext            005F15BC  
      005F1718  fProviders         
      005F1718    fHead            005F13D0  
      005F171C  fStreams           
      005F171C    fHead            00000000  
      005F1720  fWhoAmI            070A7134 
      [... à»â∫è»ó™ ...]


    éüÇÃÉNÉâÉCÉAÉìÉgÇÕ fLink.fNex ÉtÉBÅ[ÉãÉhÇíHÇÍÇŒí≤Ç◊ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBfWhoAmI ǙdžǻÇΩÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÉqÅ[ÉvÇéwÇ∑ÇÃǙdžǻÇΩÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈Ç∑ÅBé©ï™ÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇå©Ç¬ÇØÇΩÇÁÅATLibraryManager ÉeÉìÉvÉåÅ[ÉgÇégǡǃ fWhoAmI É|ÉCÉìÉ^ÇÉ_ÉìÉvǵǃÅAASLM ÇΔÇÃê⁄ë±èÓïÒÇï\é¶Ç≈Ç´Ç‹Ç∑ÅB

    >>> dm 70a7134 TLibraryManager
     Displaying TLibraryManager at 070A7134
      070A7134  __vptr             003873B0 
      070A7138  fPool              070A6780 
      070A713C  fLibraryFile       00000000 
      070A7140  fDefaultPool       070A6780 
      [... à»â∫è»ó™ ...]


    ÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇÃÉAÉhÉåÉXÇÕ fDefaultPool ÉtÉBÅ[ÉãÉhÇ…ï€éùÇ≥ÇÍǃǢNjÇ∑ÅB

ÉvÅ[ÉãÇÃÉAÉhÉåÉXÇ™ÇÌÇ©ÇÈÇΔǪÇÍÇ≈Ç≥NjǥNjǻDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

  • éüÇà MacsBug ÉRÉ}ÉìÉhÇÕÉvÅ[ÉãÇ…ä÷Ç∑ÇÈäÓñ{ìIÇ»èÓïÒÇï\é¶ÇµÇ‹Ç∑ÅB

    >>> dm 70a6780 TMemoryPool
     Displaying TMemoryPool at 070A6780
      070A6780  __vptr             00386F40 
      070A6784  fMemList           070A6770 
      070A6788  fSize              #2408 
      070A678C  fLowMark           #1797 
      070A6790  fHighMark          #4294967295 
      070A6794  fMaxUsed           #352 
      070A6798  fCurFree           #2056 
      070A679C  fZone              06F7CF00 
      070A67A0  fMemType           #1 
      [... à»â∫è»ó™ ...]


    fSize ÉtÉBÅ[ÉãÉhÇÕÉvÅ[Éãì‡ÇÃÉÅÉÇÉäÇÃëçó Ç≈Ç∑ÅBfCurFree ÇÕÉvÅ[ÉãÇ…écÇÈãÛÇ´ÉÅÉÇÉäó Ç≈Ç∑ÅB

  • dumppool dcmd ÇÕÅAéüÇÃÇÊǧDžÉvÅ[Éãì‡ÇÃÉÅÉÇÉäÉuÉçÉbÉNÇÃÉäÉXÉgÇï\é¶ÇµÇ‹Ç∑ÅB

    >>> dumppool 70a6780
     Allocated Memory
      ----------------
        70a7000(  #16)   70a7010(  #16)   70a7020( #168) 
        70a70c8(  #64) "!$plnt"
        70a7108(  #40) "!$slst"
        70a7130(  #48) "!$lmgr"
      Free Memory
      -----------
        70a67f8(#2056)




  • dumprawpool dcmd ÇÕÅAéüÇÃÇÊǧDžÇÊÇËè⁄ç◊Ç»ÉäÉXÉgÇï\é¶ÇµÇ‹Ç∑ÅB

    >>> dumprawpool 70a6780
     Allocated Memory
      ----------------
      F:   70a67f8(#2056) 
      A:   70a7000(  #16)   70a7010(  #16)   70a7020( #168) 
      A:   70a70c8(  #64) "!$plnt"
      A:   70a7108(  #40) "!$slst"
      A:   70a7130(  #48) "!$lmgr"


68K Ç≈ OT ÉOÉçÅ[ÉoÉãóÃàÊÇÉ_ÉìÉvÇ∑ÇÈ

68K Ç≈ÇÕéËèáǙǂǂï°éGÇ…Ç»ÇËÇ‹Ç∑ÅBç≈èâÇ…ÅAOT ÉOÉçÅ[ÉoÉãóÃàÊÇÃÉAÉhÉåÉXÇíTǵNjÇ∑ÅBDZÇÍÇ…ÇÕéüÇà MacsBug ÉRÉ}ÉìÉhÇégǢNjÇ∑ÅB



èdóv:
à»â∫ÇÃÇΔÇ®ÇËìÆçÏÇ≥ÇπÇÈÇΩÇflÇ…ÇÕÅAOT ÇÃÉfÉoÉbÉOÉoÅ[ÉWÉáÉìÇÉCÉìÉXÉgÅ[ÉãǵǃÅAMacsBug Ç™ FetchOTGlobalÉVÉìÉ{ÉãÇî≠å©Ç≈Ç´ÇÈÇÊǧDžÇ∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅB





>>> hx 2800
 The target heap is the System heap at 00002800
>>> il FetchOTGlobal
 Disassembling from FetchOTGlobal
  FetchOTGlobal
     +00000 0015D5E2   LINK       A6,#$0000        | 4E56 0000
     +00004 0015D5E6   MOVE.L     $00092434,D0        | 2039 0009 2434
     +0000A 0015D5EC   UNLK       A6            | 4E5E
     +0000C 0015D5EE   RTS                         | 4E75
     [... à»â∫è»ó™ ...]


ç≈èâÇÃÉRÉ}ÉìÉhÇÕåªç›Çà MacsBug ÇÃÉ^Å[ÉQÉbÉgÉ]Å[ÉìÇÉVÉXÉeÉÄÉqÅ[ÉvÇ…êÿÇËë÷ǶNjÇ∑ÅBéüÇÃÉRÉ}ÉìÉhÇÕ OT ÉOÉçÅ[ÉoÉãóÃàÊÇÃÉAÉhÉåÉXÇï‘Ç∑ä÷êîÇÉfÉBÉXÉAÉZÉìÉuÉãǵNjÇ∑ÅBFetchOTGlobal + 4 ÇÃçsÇ≈ OT ÉOÉçÅ[ÉoÉãóÃàÊÇÃÉAÉhÉåÉXÇ D0 ÉåÉWÉXÉ^Ç…à⁄ǵǃǢNjÇ∑ÅBDZDZÇ≈ÇÕÅAOT ÉOÉçÅ[ÉoÉãóÃàÊÇÃÉAÉhÉåÉXÇÕÉÅÉÇÉäà íuÇÃ$00092434 Ç…ï€ë∂Ç≥ÇÍǃǢÇÈDZÇΔÇ™ÇÌÇ©ÇËÇ‹Ç∑ÅBéüÇà MacsBug ÉRÉ}ÉìÉhÇ≈DZÇÃÉOÉçÅ[ÉoÉãóÃàÊÇ™É_ÉìÉvÇ≈Ç´Ç‹Ç∑ÅB



>>> dm 92434^ OTGlobal
 Displaying OTGlobal at 000B5050
  000B5050  fGestaltValue      0000000F 
  000B5054  f68KDeferredProc   00238164 
  000B5058  fVersion           01306007 
  [... à»â∫è»ó™ ...]


OT ÉOÉçÅ[ÉoÉãóÃàÊÇÉ_ÉìÉvÇ≈Ç´ÇΩÇÁÅAdžÇΔÇÕ PowerPC ÇΔìØÇ∂ï˚ñ@Ç™égǶNjÇ∑ÅB

ÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÉpÉâÉÅÅ[É^ÇÃêßå‰

è„Ç≈ê‡ñæÇµÇΩÇÊǧDžÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇà OT ÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇÕ InitOpenTransport ÇåƒÇ—èoǵÇΩÇΔÇ´Ç…ÉAÉvÉäÉPÅ[ÉVÉáÉìÉqÅ[ÉvÇ…äÑÇËìñǃÇÁÇÍÇ‹Ç∑ÅBç≈èâÅAÉvÅ[ÉãÇÕîÒèÌÇ…è¨Ç≥Ç≠ÅAïKóvÇ…âûÇ∂ǃëùâ¡ÇµÇ‹Ç∑ÅBǵǩǵDZÇÃìÆçÏÇÕǢǬLJïKÇ∏ç≈ìKÇ≈džÇÈÇΔÇÕǩǨÇËÇ‹ÇπÇÒÅBì¡Ç…ÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈ OT ÉÅÉÇÉääÑÇËìñǃÉãÅ[É`ÉìÇæÇØÇégǧèÍçáÇÕÅAǪÇÍÇ…ëSÉAÉvÉäÉPÅ[ÉVÉáÉìÉqÅ[ÉvÇó^ǶÇÈÇ◊Ç´Ç≈Ç∑ÅBäÑÇËìñǃÉãÅ[É`ÉìÇ™è≠ǵÇ∏ǬÉAÉvÉäÉPÅ[ÉVÉáÉìÉqÅ[ÉvÇè¡îÔÇ∑ÇÈï˚ñ@ÇÕÅAàÍìxÇ…ëÂÇ´Ç»ÉuÉçÉbÉNÇó^ǶÇÈï˚ñ@ÇÊÇËîÒå¯ó¶ìIÇ≈Ç∑ÅBÇ‹ÇΩÅAïpî…Ç…äÑÇËçûÇ›éûÇ…ÉÅÉÇÉäÇäÑÇËìñǃǃǢÇÈÇΔÅAÉNÉâÉCÉGÉìÉgÇÃÉÅÉÇÉäÉvÅ[ÉãÇ™è¡îÔÇ≥ÇÍǃǵNjǢÅAäÑÇËìñǃǙé∏îsÇ∑ÇÈâ¬î\ê´Ç™èoǃǴNjÇ∑ÅB

ÉNÉâÉCÉìÉgÇÃÉÅÉÇÉäÉvÅ[ÉãÇç◊Ç©Ç≠êßå‰Ç∑ÇÈï˚ñ@ÇÕ2ǬdžÇËÇ‹Ç∑

  • OT ÉÅÉÇÉäÉäÉUÅ[ÉuÇóòópÇ∑ÇÈ
  • ASLM Çà API ÇégǡǃÅAÉÅÉÇÉäÉvÅ[ÉãÇíºê⁄ëÄçÏÇ∑ÇÈ

DZÇÍÇÁÇÃÉeÉNÉjÉbÉNÇÕà»â∫Ç…ê‡ñæÇµÇ‹Ç∑ÅB



èdóv:
ÉAÉbÉvÉãÇÕëOé“ÇÃÉeÉNÉjÉbÉNÇã≠Ç≠êÑèßǵNjÇ∑ÅBOpen Transport ÇÕåªç› ASLM ÇÃÉNÉâÉCÉGÉìÉgÉvÅ[ÉãÇǪÇÃNjNjóòópǵǃǢNjÇ∑Ç™ÅAç°å„ÇÕǪǧÇΔLJå¿ÇËÇ‹ÇπÇÒÅBÇ‹ÇΩÅAè´óàÇÃÉVÉXÉeÉÄÇ≈ÇÕ ASLM é©ëÃÇ™ë∂ç›ÇµÇ»Ç¢â¬î\ê´Ç™Ç†ÇËÇ‹Ç∑ÅB



OT ÉÅÉÇÉäÉäÉUÅ[ÉuÇóòópÇ∑ÇÈ

ÉAÉvÉäÉPÅ[ÉVÉáÉìÉ]Å[ÉìÇÃëSëÃÇ OT ÇÃÉÅÉÇÉääÑÇËìñǃDžóòópÇ∑ÇÈÅALJǡÇΔLJämé¿Ç»ï˚ñ@ÇÕÅAOT ÉÅÉÇÉäÉäÉUÅ[ÉuÇóòópÇ∑ÇÈDZÇΔÇ≈Ç∑ÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇãNìÆÇµÇΩéûÇ…ÅAëÂÇ´Ç¢ÉÅÉÇÉäÉuÉçÉbÉNÇäÑÇËìñǃÇÈDZÇΔÇ…ÇÊǡǃÅAÉÅÉÇÉäÉäÉUÅ[ÉuÇämï€ÇµÇ‹Ç∑ÅBǪÇÃå„ÅAÉÅÉÇÉäÇ™ïKóvDžǻǡÇΩéûÇÕÅAÇ‹Ç∏ OT ÇégǡǃäÑÇËìñǃǃÅAǪÇÍÇ™é∏îsǵÇΩèÍçáÇÕÉÅÉÇÉäÉäÉUÅ[ÉuÇégǢNjÇ∑ÅB

DZÇÃÉeÉNÉjÉbÉNÇÕ OTStreamLogViewer ÉTÉìÉvÉãÉRÅ[ÉhÉoÅ[ÉWÉáÉì 1.0.1b1 à»ç~Ç≈ OTMemoryReserve ÉÇÉWÉÖÅ[ÉãÇ≈äàópÇ≥ÇÍǃǢNjÇ∑ÇÃÇ≈ÅAǪÇÃÉRÅ[ÉhÇíºê⁄óòópÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB



íê:
OT ÉÅÉÇÉäÇëÂó Ç…äÑÇËìñǃǃÅAǪǵǃÇ∑ÇÆÇ…âèúÇ∑ÇÈï˚ñ@LJçlǶÇÁÇÍÇÈǩLJǵÇÍÇ‹ÇπÇÒÇ™ÅADZÇÃéËñ@Ç≈ÇÕä˙ë“í ÇËÇÃåãâ ÇìæÇÁÇÍÇ‹ÇπÇÒÅBÉÅÉÇÉäÇâèúǵÇΩéûì_Ç≈ OT ÇÃÉÅÉÇÉää«óùÉVÉXÉeÉÄÇÕÉÅÉÇÉäÇ Mac OS ÉÅÉÇÉäÉ}ÉlÅ[ÉWÉÉÇ…ÉÅÉÇÉäÇÉäÉäÅ[ÉXǵǃǵNjǢNjÇ∑ÅB



ASLM API Ç…ÇÊÇÈÉÅÉÇÉäÉvÅ[ÉãÉpÉâÉÅÅ[É^ÇÃêßå‰



èdóv:
DZÇÃÉeÉNÉjÉbÉNÇóòópÇ∑ÇÈÇΔÅAOT Ç™ ASLM ÇóòópǵǃǢÇÈDZÇΔÇ…àÀë∂Ç∑ÇÈÇæÇØÇ≈Ç»Ç≠ÅAASLM é©ëÃÇ…àÀë∂Ç∑ÇÈDZÇΔDžǻǡǃǵNjǢNjÇ∑ÅBDZÇÃÇΩÇflÅAÉAÉbÉvÉãÇÕDZÇÃï˚ñ@ÇêÑèßǵNjÇπÇÒÅB





èdóv:
InitOpenTransportInContextÅiCarbon Ç‹ÇΩÇÕ OTClassicContext Ç…ÇÊÇÈé¿ëïÅjÇóòópÇ∑ÇÈèÍçáÇÕDZÇÃÉeÉNÉjÉbÉNÇóòópÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹ÇπÇÒÅB



ÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇÇÊÇËç◊Ç©Ç≠êßå‰Ç∑ÇÈÇ…ÇÕ ASLM ÉvÉçÉOÉâÉ~ÉìÉOÉCÉìÉ^ÉtÉFÅ[ÉXÇégópǵNjÇ∑ÅBéñëOÇ… ASLM ÇΔÇÃê⁄ë±Çèâä˙âªÇµÇƒÇ®Ç≠ÇΔÅAInitOpenTransport ÇÕÅAǪÇÃê⁄ë±ÅiÇ®ÇÊǗǪÇÃÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÅjÇégópǵÅAêVǵÇ≠çÏê¨Ç∑ÇÈDZÇΔÇÕǵNjÇπÇÒÅBASLM ê⁄ë±ÇégǧÇΔÅAÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇÃÉTÉCÉYÅAäÑÇËìñǃÇÈà íuÅAëùâ¡ÇÃäÑçáÇêßå‰Ç≈Ç´ÇÈÇÊǧDžǻÇËÇ‹Ç∑ÅB



íê:
ASLM Ç≈ÉvÉçÉOÉâÉ~ÉìÉOÇçsǧDžÇÕÅAMac OS SDK CD Çà ASLM SDK Ç™ïKóvÇ≈Ç∑ÅB





èdóv:
68K C/C++ÉRÉ}ÉìÉhÇ©ÇÁ ASLM ÇåƒÇ—èoÇ∑Ç…ÇÕÅA4 ÉoÉCÉgêÆêîÇópǢǃÉrÉãÉhÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB



DZÇÃÉeÉNÉjÉbÉNÇégǧDžÇÕÅAInitOpenTransport ÇÃëOÇ… InitLibraryManager ÇåƒÇ—èoÇ≥Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBÇ‹ÇΩÅACloseOpenTransport ÇÃå„Ç… CleanupLibraryManager ÇåƒÇ—èoÇ∑ïKóvǙdžÇËÇ‹Ç∑ÅBDZÇÍÇÁÇÃÉãÅ[É`ÉìÇÃÉvÉçÉgÉ^ÉCÉvÇÕÅuLibraryManager.hÅvÇ…íËã`Ç≥ÇÍǃǢNjÇ∑ÅBì«é“ÇÃï÷ãXÇÃÇΩÇflà»â∫Ç…åfç⁄ǵNjÇ∑ÅB



OSErr InitLibraryManager(size_t poolsize, int zoneType, int memType);
void  CleanupLibraryManager(void);


InitLibraryManager Ç÷ÇÃÉpÉâÉÅÅ[É^Ç≈ÅAÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇÃèâä˙ÉTÉCÉYÅiíPà ÇÕÉoÉCÉgÅjÅAÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇÃà íuÅiïÅí ÇÕ kSystemZoneÅAkApplicZoneÅAkCurrentZoneÅjÅAÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇÃÉÅÉÇÉäÇÃéÌófiÅiïÅí ÇÕ kNormalMemoryÅAÇΩÇæÇµÉyÅ[ÉWÉìÉOÇ™à¿ëSÇ≈ǻǢÇΔÇ´Ç…ÉAÉNÉZÉXÇ∑ÇÈèÍçáÇÕ kHoldMemoryÅjÇéwíËÇ≈Ç´Ç‹Ç∑ÅB

éüÇÃÉRÅ[ÉhÇÃífï–ÇÕDZÇÃÉeÉNÉjÉbÉNÇé¶Ç∑LJÇÃÇ≈Ç∑ÅBÇ‹Ç∏ÉAÉvÉäÉPÅ[ÉVÉáÉìÉqÅ[Évì‡Ç…è]ëÆÉ]Å[ÉìÇämï€ÇµÇ‹Ç∑ÅiÉTÉCÉYÇÕÉcÅ[ÉãÉ{ÉbÉNÉXópÇ…ëΩè≠ÉÅÉÇÉäÇécǵÇΩÉqÅ[ÉvÇÃécÇËëSïîÅBÅjéüÇ…ÅAInitOpenTransport ÇåƒÇ—èoÇ∑ëOÇ…ÅAInitLibraryManager Ç≈ ASLM Ç…ê⁄ë±ÇµÇ‹Ç∑ÅiǪǵǃêÊÇÃÉ]Å[ÉìÇÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇΔǵNjÇ∑ÅBÅj



// èdóv:
// DZÇÃÉRÅ[ÉhÇóòópÇ∑ÇÈDZÇΔÇ≈ÅAASLM Ç…àÀë∂ǵǃǵNjǢNjÇ∑ÅB 
// DZÇÃÇΩÇflÅAÉAÉbÉvÉãÇ≈ÇÕêÑèßǵǃǢNjÇπÇÒÅB
                           
                           static OSStatus InitOpenTransportWithMemoryLimit(void)
{
    OSStatus err;
    SInt32 junkTotalFree;
    SInt32 contigFree;
    SInt32 zoneSize;
    Ptr subsidiaryZone;
    THz oldZone;
 
    // Ç‹Ç∏ÉVÉXÉeÉÄÇÃÉÅÉÇÉäÉ}ÉlÅ[ÉWÉÉÇåƒÇ—èoǵÅA
    // ÉqÅ[Évì‡ÇÃç≈ëÂòAë±óÃàÊÇí≤Ç◊ÇÈÅB
    
    PurgeSpace(&junkTotalFree, &contigFree);
    
    zoneSize = contigFree - kBytesReservedForToolboxInApplicationZone;
    
    // ǪÇÃÉuÉçÉbÉNÇ…ÉÅÉÇÉäÇäÑÇËìñǃÉ]Å[ÉìÇçÏê¨Ç∑ÇÈÅB
    // ë±Ç¢Çƒ ASLM Çèâä˙âªÇµÅAǪÇÃÉ]Å[ÉìëSëÃÅiASLM ÇÃ
    // ÉIÅ[ÉoÅ[ÉwÉbÉhÇèúÇ≠ÅjÇêËÇflÇÈÉvÅ[ÉãÇÃçÏê¨ÇàÀóäÇ∑ÇÈÅB
    // ç≈å„Ç… OT Çèâä˙âªÇ∑ÇÈÅB
    // Ç∑Ç≈Ç… ASLM Ç™èâä˙âªÇ≥ÇÍǃǢÇÈÇÃÇ≈ÅAOT ÇÕ ASLM Ç™êÊÇÃ
    // É]Å[ÉìÇ…çÏê¨ÇµÇΩÉvÅ[ÉãÇ≈ OTAllocMem ÇÃóvãÅÇ…âûǶÇÈÅB

    subsidiaryZone = NewPtr(zoneSize);
    oldZone = GetZone();
 
    // InitZone ÇÕåªç›ÇÃÉ]Å[ÉìÇêVǵÇ≠çÏê¨ÇµÇΩÉ]Å[ÉìÇ…ê›íËÇ∑ÇÈÇÃÇ≈ÅA
    // é©ï™Ç≈çsǧïKóvÇÕǻǢÅB
            
    InitZone(nil, 16, subsidiaryZone + zoneSize, subsidiaryZone);
    err = InitLibraryManager(zoneSize - 2048, kCurrentZone, kNormalMemory);
    if (err == noErr) {
        err = InitOpenTransport();
        if (err != noErr) {
            CleanupLibraryManager();
        }
    }
    SetZone(oldZone);
 
    return err;
}




èdóv:
DZÇÃÉRÅ[ÉhÇÕÅADTS ÉTÉìÉvÉãÉRÅ[ÉhÇà OTStreamLogViewer Çä»íPDžǵÇΩLJÇÃÇ≈Ç∑ÅiÉGÉâÅ[É`ÉFÉbÉNÇå∏ÇÁǵNjǵÇΩÅBÅjDZÇÃÉRÅ[ÉhÇégǧèÍçáÇÕÉTÉìÉvÉãÇÃå≥ÇÃÉRÅ[ÉhÇì¸éËǵǃÇ≠ÇæÇ≥Ç¢ÅB





íê:
è„ãLÇÃÉeÉNÉjÉbÉNÇÕ ASLM API ÇégǡǃçsǶÇÈóBàÍÇÃï˚ñ@ÇΔÇÕǩǨÇËÇ‹ÇπÇÒÅBè⁄ç◊ÇÕÅwASLM Developer's GuideÅxÇéQèΔǵǃÇ≠ÇæÇ≥Ç¢ÅB





è„ãâï“

DZÇÃÉZÉNÉVÉáÉìÇ≈ÇÕÅAOT ÉÅÉÇÉää«óùÇÃä÷òAéñçÄÇÃÇ§Çøè„ãâï“ÇéÊÇËè„Ç∞Ç‹Ç∑ÅBì¡Ç…ÅAã§óLÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇ‚ÉJÅ[ÉlÉãÉvÅ[ÉãÇ™éûä‘Ç™åoâflÇ∑ÇÈDžǵÇΩǙǢÅAägëÂÅAèkè¨Ç∑ÇÈóléqÇê‡ñæÇµÇ‹Ç∑ÅBÇΩÇæÇµÇªÇÃëOÇ…ÅAOT ÉÅÉÇÉäÉVÉXÉeÉÄÇÃìÆçÏÇïœçXÇ∑ÇÈ API DžǬǢǃäwÇ‘ïKóvǙdžÇËÇ‹Ç∑ÅB



íê:
DZÇÃÉZÉNÉVÉáÉìÇÕ Open Transport ÉAÅ[ÉLÉeÉNÉ`ÉÉÇÃê[Ç¢íméØÇéùǬêlÇÃÇΩÇflÇÃéQçlópÇ…èëǴNjǵÇΩÅBóùâÇ≈Ç´Ç»Ç≠ǃLJãCDžǵǻǢÇ≈Ç≠ÇæÇ≥Ç¢ÅB



OTSetMemoryLimits

OTSetMemoryLimits ÇégǧÇΔÉ\ÉtÉgÉEÉFÉAÇ©ÇÁ OT ÉÅÉÇÉäÉvÅ[ÉãÇÃìÆçÏÇíºê⁄ïœçXÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBDZÇÃÉãÅ[É`ÉìÇÃÉvÉçÉgÉ^ÉCÉvÇÕéüÇÃÇΔÇ®ÇËÇ≈Ç∑ÅB



#ifdef __cplusplus
extern "C" {
#endif
 
extern OSStatus OTSetMemoryLimits(size_t growSize, size_t maxSize);
 
#ifdef __cplusplus
}
#endif


growSize ÉpÉâÉÅÅ[É^ÇÕç°Ç∑ÇÆ OT DžǪÇÃÉTÉCÉYÇ‹Ç≈ÉJÅ[ÉlÉãÉvÅ[ÉãÇägëÂÇ∑ÇÈDZÇΔÇéwé¶ÇµÇ‹Ç∑ÅBDZÇÃÉãÅ[É`ÉìÇåƒÇ—èoÇ∑ÇΔÅAOT ÇÕÇΩÇæÇøÇ…ÉJÅ[ÉlÉãÉvÅ[ÉãÇǪÇÃílÇ‹Ç≈ëùâ¡Ç≥ÇπÇ‹Ç∑ÅBmaxSize ÉpÉâÉÅÅ[É^ÇÕÉJÅ[ÉlÉãÉvÅ[ÉãÇÃêVǵǢç≈ëÂílÇ≈Ç∑ÅBOT ÇÕDZÇÃílÇí¥Ç¶ÇƒÉJÅ[ÉlÉãÉvÅ[ÉãÇägëÂÇ∑ÇÈDZÇΔÇÕdžÇËÇ‹ÇπÇÒÅB

OTSetMemoryLimits ÇÕìØéûÇ…ÅAOpen Transport ÇÃì‡ïîïœêî fServerMode Çê›íËǵNjÇ∑ÅBOTSetMemoryLimits Çê≥ÇÃílÇà growSize Ç≈åƒÇ—èoÇ∑ÇΔÅAfServerMode ÇÕëùâ¡ÇµÇ‹Ç∑ÅBgrowSize Ç™É[ÉçÇæÇΔ fServerMode ÇÕå∏ÇËÇ‹Ç∑ÅBfServerMode Ç™É[Éçà»äOÇæÇΔÅAOT ÇÕã§óLÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇ‚ÉJÅ[ÉlÉãÉvÅ[ÉãÇèkè¨Ç∑ÇÈDZÇΔÇÕǵNjÇπÇÒÅBçsãVÇÃǢǢÉTÅ[ÉoÉ\ÉtÉgÉEÉFÉAÇΔÇ»ÇÈÇ…ÇÕÅAãNìÆéûÇ… OTSetMemoryLimits Ç≈ê≥Çà growSize ÇéwíËǵÅAèIóπéûÇ…ÇÕ growSize Ç…É[ÉçÇéwíËÇ∑Ç◊Ç´Ç≈Ç∑ÅB

ç≈å„Ç…ÅAÉJÅ[ÉlÉãÉvÅ[ÉãÇ 20K à»è„ëùÇ‚Ç∑ÇΔÅAOTSetMemoryLimits ÇÕã§óLÉNÉâÉCÉAÉìÉgÉvÅ[ÉãLJ growSize ÇÃílÇà 10% ÇæÇØëùǂǵNjÇ∑ÅB

OTSetMemoryLimits ÇÕã…í[Ç…ÉoÅ[ÉXÉgÅiòAë±ëóéÛêMÅjÇÃëΩÇ¢ê⁄ë±ÉpÉ^Å[ÉìÇ‚ï¿çsǵǃëΩêîÇÃê⁄ë±ÇéÛÇØïtÇØÇÈÉTÅ[ÉoÉ\ÉtÉgÉEÉFÉAÇÃǛǙégópÇ∑ÇÈLJÇÃÇ≈Ç∑ÅBÉJÅ[ÉlÉãÉvÅ[ÉãÇÃç≈ëÂÉTÉCÉYÇëùÇ‚Ç∑ÇΔÅAÉTÅ[ÉoÇÕëΩêîÇÃï¿çsÇ∑ÇÈê⁄ë±Ç…ëŒâûÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBÉJÅ[ÉlÉãÉvÅ[ÉãÇÇ∑ÇÆÇ…ëùëÂÇ≥ÇπÇÈDZÇΔÇ≈Åiê⁄ë±Ç™Ç†ÇÈÇΩÇ—Ç≈ÇÕÇ»Ç≠ÅjÅAÉTÅ[ÉoÇÕÅAóòópèÛãµÇ…âûÇ∂ǃÉJÅ[ÉlÉãÉvÅ[ÉãÇ™ëùëÂÇ∑ÇÈÇÃÇë“ǬDZÇΔÇ»Ç≠ÅAï¿óÒÇÃê⁄ë±Ç≈LJäJénå„ÇΩÇæÇøÇ…éÛÇØïtÇØÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBÉJÅ[ÉlÉãÉvÅ[ÉãÇÃèkè¨Çã÷é~Ç∑ÇÈÇΔÅAí∑éûä‘ÇÃë“ã@èÛë‘ÇÃå„Ç≈LJìØéûÇ…ëΩêîÇÃê⁄ë±Ç…ëŒâûÇ≈Ç´Ç‹Ç∑ÅB

OTSetMemoryLimits ÇÕÉVÉXÉeÉÄÉ^ÉXÉNéûÇ…åƒÇ—èoÇ≥Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBéwíËó Ç‹Ç≈ÉJÅ[ÉlÉãÉvÅ[ÉãÇägëÂÇ≈ǴǻǢèÍçáÇÕÉGÉâÅ[Ç™ï‘Ç≥ÇÍÇ‹Ç∑ÅB



èdóv:
OTSetMemoryLimits ÇÕå¬ÅXÇÃê⁄ë±ÇÃê´î\Çè„Ç∞ÇÈDZÇΔÇÕdžÇËÇ‹ÇπÇÒÅBDZÇÃä÷êîÇÕêîè\ÇÃê⁄ë±Çï¿çsǵǃéùǬÉ\ÉtÉgÉEÉFÉAÇ≈ǵǩóLå¯Ç≈ÇÕdžÇËÇ‹ÇπÇÒÅBDTS ÇÕÉNÉâÉCÉAÉìÉgÉ\ÉtÉgÉEÉFÉAÇ™ OTSetMemoryLimits ÇåƒÇ—èoÇ∑DZÇΔÇÕÇ®Ç∑Ç∑ÇflǵNjÇπÇÒÅB





íê:
OTSetMemoryLimits ÉãÅ[É`ÉìÇÕ Open Transport ÇÃÉwÉbÉ_ÉtÉ@ÉCÉãÇ…ÇÕdžÇËÇ‹ÇπÇÒÅBDZÇÃÉãÅ[É`ÉìÇégǧèÍçáÇÕé©ï™Ç≈ÉvÉçÉgÉ^ÉCÉvêÈåæÇǵǃÇ≠ÇæÇ≥Ç¢ÅBÉwÉbÉ_Ç…ì¸ÇÍǃǢǻǢóùóRÇÕè„ãLÇÃï˚êjÇ©ÇÁǴǃǢNjÇ∑ÅBàÍî ÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÉvÉçÉOÉâÉÄÇÕDZÇÃÉãÅ[É`ÉìÇåƒÇ—èoÇ∑Ç◊Ç´Ç≈ÇÕǻǢǩÇÁÇ≈Ç∑ÅB





íê:
OTSetMemoryLimits ÇÃëOêgDždžÇΩÇÈ OTSetServerMode ÇΔǢǧä÷êîǙdžÇËÇ‹Ç∑ÅBDZÇÃÉãÅ[É`ÉìÇÕ OTSetMemoryLimits Ç…äÆëSÇ…éÊÇËçûÇ‹ÇÍNjǵÇΩÅB



OT ÉÅÉÇÉäÉvÅ[ÉãÇÃägëÂ

OT ÇÕÅAÉoÉCÉiÉäÅEÉoÉbÉNÉIÉtÅEÉAÉãÉSÉäÉYÉÄÇópǢǃÉvÅ[ÉãÇägëÂǵNjÇ∑ÅBÇ‹Ç∏ Mac OS ÉÅÉÇÉäÉ}ÉlÅ[ÉWÉÉÇ… 1 å¬ÇÃëÂÇ´Ç»ÉÅÉÇÉäÉuÉçÉbÉNÇóvãÅǵNjÇ∑ÅBǪÇÃÉTÉCÉYÇÃÉuÉçÉbÉNÇ™éÊìæÇ≈ǴǻǢÇΔÅAóvãÅÉTÉCÉYÇîºï™Ç…ǵǃçƒééçsǵNjÇ∑ÅBDZÇÃìÆçÏÇóvãÅǫǮÇËÇÃÉvÅ[ÉãÇÃägëÂÇ…ê¨å˜Ç∑ÇÈÇ©ÅAÉuÉçÉbÉNÉTÉCÉYÇ™ 10K ÇÊÇËè≠Ç»Ç≠ǻǡǃǵNjǧNjÇ≈åJÇËï‘ǵNjÇ∑ÅB

OT ÉÅÉÇÉäÉvÅ[ÉãÇÃèkè¨

OT ÉÅÉÇÉäÉvÅ[ÉãÇÕèkè¨â¬î\Ç≈Ç∑ÅBÉÅÉÇÉäÉvÅ[ÉãÇÕ Mac OS ÉÅÉÇÉäÉ}ÉlÅ[ÉWÉÉÇ©ÇÁäÑÇËìñǃÇΩï°êîÇÃïsòAë±Ç»ÉÅÉÇÉäÉuÉçÉbÉNÇ©ÇÁÇ»ÇËÇ‹Ç∑ÅBÉvÅ[ÉãÇèkè¨Ç∑ÇÈèÍçáÇÕÅAMac OS ÉÅÉÇÉäÉuÉçÉbÉNǙǪÇÍǺÇÍãÛǩǫǧǩåüç∏ǵNjÇ∑ÅBãÛÇ≈džÇÍÇŒÅAǪÇÃÉÅÉÇÉäÉuÉçÉbÉNÇÕ Mac OS ÉÅÉÇÉäÉ}ÉlÅ[ÉWÉÉÇ…ï‘ãpǵNjÇ∑ÅB

OT ÉÅÉÇÉäÉvÅ[ÉãÇÕéüÇÃèÍçáÇ…èkè¨Ç≥ÇÍÇ‹Ç∑ÅB

  • ÉNÉâÉCÉAÉìÉgÇ™èIóπǵÅiCloseOpenTransport ÇåƒÇ—èoÇ∑Ç©ÅAåƒÇ—èoÇ≥Ç∏Ç…ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™èIóπÇ∑ÇÈèÍçáÅjÅAOT Ç™ÉTÅ[ÉoÉÇÅ[ÉhÇ≈ǻǢÇΔÅAOT ÇÕã§óLÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇΔÉJÅ[ÉlÉãÉvÅ[ÉãÇå∏ÇÁǵNjÇ∑ÅB
  • OT Ç™ÉNÉâÉCÉAÉìÉgÉâÉCÉuÉâÉäÇÉAÉìÉçÅ[ÉhÇ∑ÇÈÇΔÇ´ÅAã§óLÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇå∏ÇÁǵNjÇ∑ÅB
  • OT Ç™ÉJÅ[ÉlÉãÇÉAÉìÉçÅ[ÉhÇ∑ÇÈÇΔÇ´ÅiInitOpenTransport ÇåƒÇ—èoǵǃǢÇÈÉNÉâÉCÉAÉìÉgÇ™ 1 ǬLJǻÇ≠ǻǡÇΩÇΔÇ´ÅjÅAÉTÅ[ÉoÉÇÅ[ÉhÇ≈Ç»ÇØÇÍÇŒÅAÉJÅ[ÉlÉãÉvÅ[ÉãÇå∏ÇÁǵNjÇ∑ÅB
  • OT Ç™ÉJÅ[ÉlÉãÉÜÅ[ÉeÉBÉäÉeÉBÉâÉCÉuÉâÉäÇÉAÉìÉçÅ[ÉhÇ∑ÇÈÇΔÇ´ÅiInitOpenTransportUtilities ÇåƒÇ—èoǵǃǢÇÈÉNÉâÉCÉAÉìÉgÇ™ 1 ǬLJǻÇ≠ǻǡÇΩÇΔÇ´ÅjÅAOT ÇÕÉ|Å[ÉgÉvÅ[ÉãÇå∏ÇÁǵNjÇ∑ÅB
  • OT ÇÕÉ|Å[ÉgÉXÉLÉÉÉiÇÃé¿çså„ÅAÉ|Å[ÉgÉvÅ[ÉãÇå∏ÇÁǵNjÇ∑ÅB
  • OT ÇÕÅAÉRÉìÉtÉBÉOÉåÅ[É^ÇÃÉäÉXÉgÇíHÇËÅAǪÇà OTSetupConfigurator Ç‹ÇΩÇÕ OTStartupConfigurator ÉGÉìÉgÉäÉ|ÉCÉìÉgÇåƒÇ—èoǵÇΩå„ÇΩÇæÇøÇ…ÅAã§óLÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇå∏ÇÁǵNjÇ∑ÅB

ÉJÅ[ÉlÉãÉvÅ[ÉãÇ…ä÷Ç∑ÇÈǪÇÃëºÇÃè⁄ç◊éñçÄ

OT ÇÕÉJÅ[ÉlÉãÉvÅ[ÉãÉTÉCÉYÇÃè„å¿Ç…å≈íËÇÃå¿äEílÇê›íËǵǃǢNjÇ∑ÅBÉNÉâÉCÉAÉìÉgÇÕDZÇÃå¿äEílÇ OTSetMemoryLimits ÉãÅ[É`ÉìÇ≈ê›íËÇ≈Ç´Ç‹Ç∑ÅBDZDZÇ≈ã^ñ‚Ç™ÇÌÇ´Ç‹Ç∑ÅBå¿äEílÇÃèâä˙ílÇÕÇ»ÇÒÇ≈ǵÇÂǧÅBÉCÉìÉXÉgÅ[ÉãÇÃíºå„Ç…ÇÕÅAOT ÇÕDZÇÍÇÉ}ÉVÉìÇÃï®óùÉÅÉÇÉäÅigestaltPhysicalRAMSize Ç≈í≤Ç◊ÇÈÅjÇà 10% Ç…ê›íËǵNjÇ∑ÅBDZÇÃílÇÕÅAÉlÉbÉgÉèÅ[ÉNÉ\ÉtÉgÉEÉFÉAÇ…è\ï™Ç»ÉoÉbÉtÉ@ãÛä‘Çó^ǶǬǬÅAOT Ç™ÉÜÅ[ÉUÇÃëSÉÅÉÇÉäÇè¡îÔǵǻǢÇÊǧÉoÉâÉìÉXÇéÊÇ¡ÇΩåãâ Ç≈Ç∑ÅB

ÉJÅ[ÉlÉãÇç≈èâÇ…ÉçÅ[ÉhÇ∑ÇÈÇΔÅAOT ÇÕè„ãLÇÃèâä˙ílÇ≈ÉJÅ[ÉlÉãÉvÅ[ÉãÇçÏê¨ÇµÇ‹Ç∑ÅBǵǩǵÅAÉJÅ[ÉlÉãÇ™ÉçÅ[ÉhÇ∑ÇÈÇΩÇ—Ç…Åiç≈èâÇÃÇΔǴLJä‹ÇflǃÅjÅAOT ÇÕÉçÅ[ÉhÇäÆóπÇ∑ÇÈëOÇ…è≠Ç»Ç≠ÇΔLJ 96KB ÇæÇØÉJÅ[ÉlÉãÉvÅ[ÉãÇëùâ¡Ç≥ÇπÇ‹Ç∑ÅBDZÇÍÇÕÅAÉJÅ[ÉlÉãÇ™ÉAÉìÉçÅ[ÉhÇ≥ÇÍǃǢÇÈÇΔÇ´ÇÕÉJÅ[ÉlÉãÉvÅ[ÉãÇè¨Ç≥Ç≠ǵÅAÉçÅ[ÉhÇÃç€Ç…ÇÕÇ∑njǂÇ≠ëùâ¡Ç≥ÇπÇÈÇΩÇflÇ≈Ç∑ÅB



óvñÒ

Open Transport ÇÕêMóäê´ÇÃdžÇÈè_ìÓÇ≈äÑÇËçûǛDžëŒâûǵÇΩÉÅÉÇÉää«óùÉVÉXÉeÉÄÇ≈Ç∑ÅBìÆçÏå¥óùÇóùâÇ∑ÇÈDZÇΔÇ≈ÅAä◊ÇËÇ™ÇøÇ»é∏îsÇîÇØÇ»Ç™ÇÁÅAǵǩLJäÑÇËçûÇ›éûÇ…ÉÅÉÇÉäÇäÑÇËìñǃÇÈÉRÅ[ÉhÇèëÇ≠DZÇΔÇ™Ç≈Ç´ÇÈÇÊǧDžǻÇËÇ‹Ç∑ÅB



éQçlï∂å£

ïœçXóöó

Åm1998îN5åé11ì˙Ån

ç≈èâÇ…ÉäÉäÅ[ÉX

Åm2001îN1åé9ì˙Ån

ASLM Ç÷ÇÃàÀë∂DžǬǢǃåxçêǵÅAASLM ÇÃóòópÇîÇØÇÈÇÊǧǻéËñ@Çè–âÓǵNjǵÇΩÅBÉvÅ[ÉãÉpÉâÉÅÅ[É^Ç… 1998 îNà»ç~Çà OT ÉäÉäÅ[ÉXÇí«â¡ÇµÇ‹ÇµÇΩÅB